/**
 * @descript 后台各个实体设置CommonEntity里面属性的共用JS
             1. 可以单个（或者批量）设置实体的审核、热门、精华、推荐等。
             2. 可以单个（或者批量）删除实体。
 * @author   HiSay
 * @datetime 2013-07-25 11:20
 */
/*************************************************/

$(function(){
	
	initListener();
	initValidForm();
	commonSingleRequest();
	commonBatchRequest();
	tableSelect();
	initAce();
	fileUpload();
});

/**
 * 初始化ace一些代码
 */
function initAce(){
	//表样式控制
	var table = $('#sample-table-2');
	var colCount = table.find('thead').find('th').size();
	var aoColumns = [];
	aoColumns.push({ "bSortable": false });
	aoColumns.push({ "bSortable": false });
	for(var i = 2; i < colCount - 1; i++){
		
		aoColumns.push({ "bSortable": true });
	}
	aoColumns.push({ "bSortable": false });
	table.wrap("<div class='dataTables_borderWrap' />").dataTable({
		"bPaginate": false,//翻页功能
		"bLengthChange": false, //改变每页显示数据数量
		"bFilter": false, //过滤功能
		"bSort": true, //排序功能
		"bInfo": false,//页脚信息
		"bAutoWidth": true,//自动宽度
		"aoColumns": aoColumns,
		"aaSorting": []
//			"sScrollY": "200px",
//			"sScrollX": "100%",
//			"sScrollXInner": "120%",
//			"bScrollCollapse": true,
//			"iDisplayLength": 50
    });
	
	//初始化ace的select的样式
	$('.chosen-select').chosen({allow_single_deselect:true});
	
	//初始化可拖拽table
//	$('.dd').nestable();
	
	//初始化tooltip
	$('[data-rel=tooltip]').tooltip();
	
	//表示样式控制
/*	var table = $('#sample-table-2');
	var colCount = table.find('thead').find('th').size();
	var aoColumns = [];
	aoColumns.push({ "bSortable": false });
	aoColumns.push({ "bSortable": false });
	for(var i = 2; i < colCount - 1; i++){
		
		aoColumns.push({ "bSortable": true });
	}
	aoColumns.push({ "bSortable": false });
	table.wrap("<div class='dataTables_borderWrap' />").dataTable({
		"bPaginate": false,//翻页功能
		"bLengthChange": false, //改变每页显示数据数量
		"bFilter": false, //过滤功能
		"bSort": true, //排序功能
		"bInfo": false,//页脚信息
		"bAutoWidth": true,//自动宽度
		"aoColumns": aoColumns,
		"aaSorting": [],
//		"sScrollY": "200px",
//		"sScrollX": "100%",
//		"sScrollXInner": "120%",
//		"bScrollCollapse": true,
//		"iDisplayLength": 50
    });*/
	
	//初始化图片查看组件的样式
	var $overflow = '';
	var colorbox_params = {
		rel: 'colorbox',
		reposition:true,
		scalePhotos:true,
		scrolling:false,
		previous:'<i class="ace-icon fa fa-arrow-left"></i>',
		next:'<i class="ace-icon fa fa-arrow-right"></i>',
		close:'&times;',
		current:'{current} of {total}',
		maxWidth:'100%',
		maxHeight:'100%',
		onOpen:function(){
			$overflow = document.body.style.overflow;
			document.body.style.overflow = 'hidden';
		},
		onClosed:function(){
			document.body.style.overflow = $overflow;
		},
		onComplete:function(){
			$.colorbox.resize();
		}
	};
//	$('.ace-thumbnails [data-rel="colorbox"]').colorbox(colorbox_params);
	$("#cboxLoadingGraphic").html("<i class='ace-icon fa fa-spinner orange fa-spin'></i>");//let's add a custom loading icon
	$(document).one('ajaxloadstart.page', function(e) {
		$('#colorbox, #cboxOverlay').remove();
   });
	
	
	//初始化日期、时间控件
//	$('input[name=date-range-picker]').daterangepicker({
//		'applyClass' : 'btn-sm btn-success',
//		'cancelClass' : 'btn-sm btn-default',
//		locale: {
//			applyLabel: '确定',
//			cancelLabel: '取消'
//		},
//		format : 'YYYY-MM-DD'
//	}).prev().on(ace.click_event, function(){
//		$(this).next().focus();
//	});
//	
//	$('.date-picker').datepicker({
//		autoclose: true,
//		todayHighlight: true
//	}).next().on(ace.click_event, function(){
//		$(this).prev().focus();
//	});
}

/**
 * 表格行的checkbox的全选功能
 */
function tableSelect(){
	
	$(document).on('click', 'th input:checkbox' , function(){
		var that = this;
		$(this).closest('table').find('tr > td:first-child input:checkbox').each(function(){
			
			this.checked = that.checked;
			$(this).closest('tr').toggleClass('selected');
		});
		showStatusButtons();
	});
	
}

/**
 * @description 初始化实体按钮的点击事件
 * @author HiSay
 * @datetime 2013-07-31 10:12:37
 */
function initListener() {
	
	//绑定保存按钮的事件s
	$("#submitBtn").bind("click", function(){
		var validForm = $("#validForm");
		validForm.find("textarea").each(function(){
			try {
				var obj=$(this);
				if(!tuyou.isNull(obj)){
					try {
						var objKE = eval(obj.attr("name"));
						objKE.sync();//sync textarea editor content to commom's textarea
					} catch(ee){}
				}
			} catch(e) {}
		});
		$("#validForm").submit();
	});
	
	//绑定复选款选择实践
	$('.statusCheckbox').click(function(){
		
		showStatusButtons();
	});
	
	//绑定返回按钮的事件
	$("#returnBtn").bind("click", function(){tuyou.back();});
	
	//绑定刷新本页的事件
	$("#reloadBtn").bind("click", function(){tuyou.reload();});
	
	//绑定列表页全选的事件
	$("#selectCheckBoxAllChk").bind("click", function(){
		var obj = $(this);
		var name = $(this).attr("objectChkName");
		if(obj.prop("checked")){
			$("input[name='"+name+"']").prop("checked",true);
		}else{
			$("input[name='"+name+"']").prop("checked",false);
		}
	});
}

/**
 * @descript 通用的服务端调用(单条数据操作)
 * @return  
 */
function commonSingleRequest() {
	
	$('.singleRequest').click(function(){
		
		var item = $(this);
		var alert = item.attr('alert'); //是否要弹窗提示，alert的值为提示信息
		var confirm = item.attr('confirm'); //是否要弹窗确认，confirm的值为确认信息
		var url = item.attr('url'); //请求的地址
		var params = item.attr('params'); //请求的参数
		if(!tuyou.isNull(params)){
			
			params = JSON.parse(params);
		}
		
		if(tuyou.isNull(alert) && tuyou.isNull(confirm)){  //没有提示消息就直接请求
			
			commonPost(url, params)
		}else if(!tuyou.isNull(alert)){ //有alert消息，则alert提示
			
			tuyou.alert(msg, function(){
				
				commonPost(url, params);
			});
		}else if(!tuyou.isNull(confirm)){ //有confirm消息，则confirm提示
			
			tuyou.confirm(msg, function(){
				
				commonPost(url, params);
			});
		}
	});
	return false;
}

function commonPost(url, params){
	
	$.post(
		url,
		params,
		function(data){
			
			if(data.status == tuyou.YES){
				
				tuyou.alert(data.msg, 1500, function(){
					
					tuyou.reload();
				});
			} else if(data.status == tuyou.NO) {
				
				tuyou.alert(data.msg, 3000);
			}
		}, 
		'json'
	);
}

/**
 * @descript 通用的服务端调用(多条数据操作)
 * @return  
 */
function commonBatchRequest() {
	
	$('.batchRequest').click(function(){
		
		var item = $(this);
		var elementIds = tuyou.getValueByCheckedName(item.attr('value'));
		if(!tuyou.isNull(item.attr('redirect'))){
			
			var href = item.attr('url');
			if(href.indexOf('?') > -1){
				
				window.location = item.attr('url') + '&id=' + elementIds;
			}else{
				
				window.location = item.attr('url') + '?id=' + elementIds;
			}
		}else{
			
			tuyou.confirm('你确定操作吗？', function(){
				$.ajax({
					type:'POST',
					dataType:'json',
					url:item.attr('url'),
					data:'id=' + elementIds,
					success:function(data){
						
						if(data.status == tuyou.YES){
							
							tuyou.alert(data.msg, 1500, function(){
								
								window.location.reload();
							});
						} else if(data.status == tuyou.NO) {
							
							tuyou.alert(data.msg, 1500);
						}
					}
				});
			});
		}
	});
	return false;
}

/**
 * 批量操作
 * @param url 要提交的到的action
 * @param selectElementId 复选框的值
 * @param tipMsg 弹出窗口的提示信息
 * @param params 提交的额外参数
 * @param showConfirmWindow 是否显示textarea填写信息
 * @returns {Boolean}
 */
function batchOperation(url, elementIds, tipMsg, params, showWindow, callback) {
	
//	var elementIds = tuyou.getValueByCheckedName(selectElementId);
	//判断是否有选中要操作的信息
	if(elementIds == null || elementIds == '') {
		tuyou.alert('请选择您要批量操作的信息！');
		return false;
	}
	if(!params){
		
		params = {};
	}
	params.idsValue = elementIds;
	params.isChecked = $("#isChecked").is(":checked");
	
	if(showWindow == true){
		
		tuyou.prompt(tipMsg, function(result){
			
	  		params.content = result;
	  		post();
		});
	}else{
		
		tuyou.alert('系统提示', 1500, post);
	}
	
	/**
	 * 提交参数到服务器
	 */
	function post(){
		
		$.ajax({
			type:'POST',
			dataType:'json',
			url:url,
			data:$.param(params),
			success:function(data){
				if(data.status == tuyou.YES){
					
					if(callback){
						
						callback(data.msg);
					}else{
						
						tuyou.alert('操作成功！', 1500, function(){
							
							location.reload();
						});
					}
				} else if(data.status == tuyou.NO) {
					
					tuyou.alert(data.msg, 1500);
				}
			}
		});
	}
	return false;
}

/**
 * 身份证的验证方法
 * @param gets
 * @param obj
 * @param curform
 * @param regxp
 * @returns {Boolean}
 */
function yzsfz(gets,obj,curform,regxp){
    //参数gets是获取到的表单元素值，obj为当前表单元素，curform为当前验证的表单，regxp为内置的一些正则表达式的引用;
    var rgp1 = /^[1-9]\d{5}[1-9]\d{3}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}([0-9]|X)$/;
    var rgp2 = /^[1-9]\d{7}((0\d)|(1[0-2]))(([0|1|2]\d)|3[0-1])\d{3}$/;
    if(rgp1.test(gets) || rgp2.test(gets)){
        if(gets.length==18){
            var idCardWi=new Array( 7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2 ); //将前17位加权因子保存在数组里
            var idCardY=new Array( 1, 0, 10, 9, 8, 7, 6, 5, 4, 3, 2 ); //这是除以11后，可能产生的11位余数、验证码，也保存成数组
            var idCardWiSum=0; //用来保存前17位各自乖以加权因子后的总和
            for(var i=0;i<17;i++){
                idCardWiSum+=gets.substring(i,i+1)*idCardWi[i];
            }

            var idCardMod=idCardWiSum%11;//计算出校验码所在数组的位置
            var idCardLast=gets.substring(17);//得到最后一位身份证号码

            //如果等于2，则说明校验码是10，身份证号码最后一位应该是X
            if(idCardMod==2){
                if(idCardLast=="X"||idCardLast=="x"){
                    return true;
                }else{
                    return false;
                }
            }else{
                //用计算出的验证码与最后一位身份证号码匹配，如果一致，说明通过，否则是无效的身份证号码
                if(idCardLast==idCardY[idCardMod]){
                   return true;
                }else{
                    return false;
                }
            }
        }
        if(gets.length==15){
            var year =  gets.substring(6,8);
            var month = gets.substring(8,10);
            var day = gets.substring(10,12);
            var temp_date = new Date(year,parseFloat(month)-1,parseFloat(day));
            // 对于老身份证中的你年龄则不需考虑千年虫问题而使用getYear()方法
            if(temp_date.getYear()!=parseFloat(year)||temp_date.getMonth()!=parseFloat(month)-1||temp_date.getDate()!=parseFloat(day)){
                return false;
            }else{
                return true;
            }
        }
    }else{
        return false;
    }

}
/**
 * @description initial the validForm to valid and submit.
 * @author HiSay
 * @datetime 2014-10-10 07:41:27
 */
function initValidForm() {
	var validForm = $("#validForm");
	validForm.Validform({
		tiptype : function (msg, o, cssctl) {
			//msg：提示信息;
			//o:{obj:*,type:*,curform:*}, obj指向的是当前验证的表单元素（或表单对象），type指示提示的状态，值为1、2、3、4， 1：正在检测/提交数据，2：通过验证，3：验证失败，4：提示ignore状态, curform为当前form对象;
			//cssctl:内置的提示信息样式控制函数，该函数需传入两个参数：显示提示信息的对象 和 当前提示的状态（既形参o中的type）;
			if(!o.obj.is("form")) {//验证表单元素时o.obj为该表单元素，全部验证通过提交表单时o.obj为该表单对象;
				var objtip = o.obj.siblings(".validform_tip");
				cssctl(objtip, o.type);
				objtip.text(msg);
			} else {
				var objtip = o.obj.find("#msgdemo");
				cssctl(objtip, o.type);
				objtip.text(msg);
			}
		},
		ajaxPost : true,
		datatype : {
			double : /^$(\d{1,4})|^\d+(\.\d{1,100})?$/,
			url : /^http:\/\/[\w\-_]+(\.[\w\-_]+)+([\w\-\.,@?^=%&amp;:/~\+#]*[\w\-\@?^=%&amp;/~\+#])?$/
		},
		beforeSubmit : function(curform){
			
//			var $fileUploads = curform.find('.fileUpload');
//			$fileUploads.each(function(){
//				
//				var $fileUpload = $(this);
//				var uploadParams = $.parseJSON($fileUpload.attr('upload-param'));
//				if(uploadParams.required && $fileUpload.next().children().size() == 0){
//					
//					return false;
//				}
//			});
//			return true;
		},
		callback : function(data){
			
			if(data.status == tuyou.YES) {
			   
				tuyou.alert(data.msg, 1000, function(){
				   
					var forward = validForm.attr("forward");
					if(!tuyou.isNull(forward) && forward.length > 0){
					   
						location.href = forward;
					}else{
						
						tuyou.reload();
					}
				});
			} else {
			   
				tuyou.alert(data.msg, 3000);
			}
			return false;
		}
	});
}

/**
 * 检查复选框选择的数据，显示对应按钮
 */
function showStatusButtons(){
	
	$('.batchCommendBtn').hide();
	$('.batchAuditBtn').hide();
	$('.batchHotBtn').hide();
	$('.batchRealDeleteBtn').hide();
	$('.batchLogicDeleteBtn').hide();
	
	var checkboxs = $('.statusCheckbox:checked');
	if(checkboxs.size() > 0){
		
		$('.batchRealDeleteBtn').show();
		$('.batchLogicDeleteBtn').show();
		
		var showCommendButton = true;
		var showCancelCommendButton = true;
		var showAuditButton = true;
		var showCancelAuditButton = true;
		var showHotButton = true;
		var showCancelHotButton = true;
		checkboxs.each(function(){
			
			var checkbox = $(this);
			if(checkbox.attr('commendStatus') == 'yes'){
				
				showCommendButton = false;
			}
			if(checkbox.attr('commendStatus') == 'no'){
				
				showCancelCommendButton = false;
			}
			if(checkbox.attr('auditStatus') == 'yes'){
				
				showAuditButton = false;
			}
			if(checkbox.attr('auditStatus') == 'no'){
				
				showCancelAuditButton = false;
			}
			if(checkbox.attr('hotStatus') == 'yes'){
				
				showHotButton = false;
			}
			if(checkbox.attr('hotStatus') == 'no'){
				
				showCancelHotButton = false;
			}
		});
		if(showCommendButton == true){
			
			$('.batchCommendBtn').eq(1).show();
		}
		if(showCancelCommendButton == true){
			
			$('.batchCommendBtn').eq(0).show();
		}
		if(showAuditButton == true){
			
			$('.batchAuditBtn').eq(1).show();
		}
		if(showCancelAuditButton == true){
			
			$('.batchAuditBtn').eq(0).show();
		}
		if(showHotButton == true){
			
			$('.batchHotBtn').eq(1).show();
		}
		if(showCancelHotButton == true){
			
			$('.batchHotBtn').eq(0).show();
		}
	}
}

/**
 * 文件上传
 * @param clip 是否需要剪切
 * @param width 高度
 * @param height 宽度
 * @param type 对应字段
 * @param mutil 是否多文件上传
 */
function fileUpload(){
	
	function fileUploadInner(){
		
		var dom = $(this);
		
		//避免多次点击
		dom.unbind('click');
		setTimeout(function(){
			
			dom.click(fileUploadInner);
		}, 2000);
		
		var fileQueue = dom.siblings('.fileQueue');
		var param = $.parseJSON(dom.attr('upload-param'));
		if(param.clip == true){  //剪切上传
			
			tuyou.FileUpload.cutUpload(param, fileQueue);
		}else{  //直接上传，不用剪切
			
			tuyou.FileUpload.directUpload(param, fileQueue);
		}
	}
	
	$('.fileUpload').click(fileUploadInner);
}

function delImg(id,name){
	try {
		$.ajax({
			type: "POST",
			url: "jQueryUpload_deleteImage.action",
			data:"name="+name,
			success: function(msg){
				
				var json = $.parseJSON(msg);
				if(json.status == tuyou.YES){
					
				   $(".span"+id).remove();
				}
			} 
		});
	} catch(e) {
	}
}

/**
 * 
 * 删除图片
 * @param {Object} id
 * @param {Object} name
 */
function delImgUpdate(id,name){
	try {
		$.ajax({
		type: "POST",
		url: "jQueryUpload_deleteImageUpdate.action",
		data:"name="+name,
		success: function(msg){
			
			var json = $.parseJSON(msg);
			if(json.status == tuyou.YES){
				
			   $(".span"+id).remove();
			}
		} 
		});
	} catch(e) {
	}
}

function showPersonalInfo(){
	
	var loading = layer.open({
		area : ['640px', '260px'],
		type : 1,
		content : $('#popupLayer'),
		closeBtn : 2,
		title : false,
		anim : 1,
		resize : false,
		zIndex : 999
	});
	return loading;
}